# vi /etc/nginx/sites-enabled/cache-proxy

# Настройка кеша
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=microcache:5m max_size=1000m;
server {
 listen 80;
 server_name example.com;
 # Кешируемый адрес
 location / {
 # Кеш включен по умолчанию
 set $no_cache "";
 # Отключаем кеш для всех методов, кроме GET и HEAD
 if ($request_method !~ ^(GET|HEAD)$) {
 set $no_cache "1";
 }
 # В случае если клиент загружает контент на сайт (no_cache = 1), делаем так, чтобы отдаваемые ему данные не кешировались в течение двух секунд и он смог увидеть результат загрузки

 if ($no_cache = "1") {
 add_header Set-Cookie "_mcnc=1;
 Max-Age=2;
 Path=/";
 add_header X-Microcachable "0";
 }

 if ($http_cookie ~* "_mcnc") {
 set $no_cache "1";
 }

 # Включаем/отключаем кеш в зависимости от состояния переменной

 no_cache proxy_no_cache $no_cache;
 proxy_cache_bypass $no_cache;

 # Проксируем запросы на реальный сервер
 proxy_pass http://appserver.example.ru;
 proxy_cache microcache;
 proxy_cache_key $scheme$host$request_method$request_uri;
 proxy_cache_valid 200 1s;

 # Защита от проблемы Thundering herd
 proxy_cache_use_stale updating;

 # Добавляем стандартные хидеры
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

 # Не кешируем файлы размером больше 1 Мб
 proxy_max_temp_file_size 1M;
 }
 }
изменён: 06 января 2024 г.